import datetime


class  Person:
    #类属性，存放公共数据，对象要的东西，都有的
    max=120
    plant= '地球'


    #实例属性，不能通过类访问
    #初始化
    def __init__(self,name,age,gender):
        self.name=name
        if age <= Person.max:
            self.age = age
        else:

            print(f"年龄输入错误{Person.max}")
            self.age = Person.max#把这个年纪作为最大年龄


    @classmethod#操作对象就是类层面
    def change_panlt(cls,value):
        cls.plant=value



    @classmethod
    def create(cls,info_str):   #得到的是容器，需要见他们创建为对象，使用类方法，创建，来约束
        name,year,gender=info_str.split('-')
        current_year = datetime.now().year#得到，当前的年份
        age = current_year - int(year)#year是字符串，转换一下

        return cls(name,age,gender)



#验证类方法，类来调用，改变了类属性
Person.change_panlt('火星')
print(Person.plant)
p1=Person('张三',12,'女')

Person.create("张三-1987-女")


#注意点，类方法可以使用实列调用，但是非常不推荐
p9 = p1.create('历史-1900-女')#不推荐
